/**
 * Copyright 2010 Tristan Slominski
 *
 * Licensed under the MIT License (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.opensource.org/licenses/mit-license.php
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mindash.handlebars.client.presenters.impl;

import com.google.inject.Inject;
import com.google.inject.Provider;
import com.mindash.handlebars.client.adapter.Adapter;
import com.mindash.handlebars.client.places.AtPlace;
import com.mindash.handlebars.client.places.handlers.AtPlaceGenericHandler;
import com.mindash.handlebars.client.providers.StarterProjectGoToPlaceProvider;
import com.mindash.handlebars.client.services.EventBus;
import com.mindash.handlebars.client.views.impl.LoginViewImpl;

/**
 * @author "Tristan Slominski"
 * 
 */
public class LoginPresenterImpl extends DefaultPresenterImpl<LoginViewImpl> {
  
  /* injected dependencies */
  @Inject
  private StarterProjectGoToPlaceProvider goToPlaceProvider;

  @Inject
  public LoginPresenterImpl(EventBus eventBus,
      Provider<LoginViewImpl> viewProvider) {
    super(eventBus, viewProvider);
  }

  @Override
  public void bindView() {
    /* nothing to do */
  }

  @Override
  public <T extends AtPlaceGenericHandler> void onAtPlace(AtPlace<T> place) {
    /* always make sure to call super for correct initialization */
    super.onAtPlace(place);
    /* login presenter will always look the same (nothing is adapter dependent) */
    setAdapter(Adapter.nullAdapter);
  }

  /* Ui Handlers */

  public void onSignIn() {
    /*
     * normally we would validate the data and talk to the server to get login
     * authorization, but for now, we will just go to the dashboard
     */
    eventBus.fireEvent(goToPlaceProvider.getGoToDashboardPage());
  }

}
